home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Communications / General / LineShare Folder / Put Onto Productions Disks / LineShare Scripts / Pro⁄Office Fax&ARA < prev    next >
Text File  |  1994-02-10  |  6KB  |  263 lines

  1. ! Version 2.1
  2. !
  3. !$ Use with: Prometheus HomeOffice 2400/9600 fax modems.
  4.  
  5. !$ Supports: fax (MaxFax) and ARA incoming calls.
  6. !
  7. !$ A cable for hardware handshaking is required
  8.  
  9. ^2 Speaker On:        = Enum("Never" = "0","During Connect" = "1", "Always"="2") "1"
  10. ^3 Speaker Volume:       = Enum("Low"="1","Medium"="2","High"="3") "2"
  11. ^4 Answer On:         = Enum("1 Ring"="1","2 Rings"="2","3 Rings"="3","5 Rings"="5","7 Rings"="7") "2"
  12. ^5 Fax Identifier:    = Text "Stalker_GmbH"
  13. ^6 Handshake wires:   = Bool("CTS/RTS"="&D0\Q3","CTS only"="&D2\Q2") "&D2\Q2"
  14. ! ------------------------------------------
  15. ! Resetting the modem:
  16. ! ------------------------------------------
  17. @Hangup
  18.   Note "Resetting" 3
  19.   SetTries 2
  20.   Flush
  21.   HsReset 0,0,17,19,0,0
  22. !
  23. ! Try to catch the "OK" answer, use the Escape seq and DTR transitions
  24. ! to enter the command mode
  25. !
  26. @Label 1
  27.   matchclr
  28.   matchstr 1 2 "OK\r\n"
  29.   write "ATH0&F\r"
  30.   matchread 20
  31.   Write "+++"
  32.   DtrClear
  33.   pause 5
  34.   DtrSet
  35. !
  36.   SerReset 19200,0,8,1
  37.   DecTries
  38.   IfTries 1 1
  39.   SerReset 9600,0,8,1
  40.   IfTries 0 1
  41. !
  42. ! OSErr -6019 "Modem error - the modem is not responding"
  43. !
  44.   exit -6019
  45. @Label 2
  46.   SerReset 9600,0,8,1
  47.   write "AT+FCLASS=0\r"
  48.   Jsr 100
  49.   write "AT+FAA=0\r"
  50.   Jsr 100
  51.   exit 0
  52.  
  53. ! ------------------------------------------
  54. !    Receiving incoming calls
  55. ! ------------------------------------------
  56. @ANSWER
  57. !
  58. ! Set the modem preferred speed first
  59. !
  60.   SerReset 9600,0,8,1
  61.   Jsr 80
  62. @Label 10
  63. !
  64. ! Set the common options
  65.   Jsr 70
  66. !
  67. ! Set the communication options:
  68. ! • \N0:  Normal connection (for ARA)
  69. ! • W1:  report connection speed
  70. !
  71.   Write "AT\\N0W1\r"
  72.   Jsr 100
  73. !
  74. ! Set Fax parameters: LID, DCC,BOR
  75. !
  76.  Write "AT+FCLASS=2\r"
  77.  Jsr 100
  78. ! Nice feature: when in Class 2, the modem switches to 19200 always!
  79.  SetSpeed 19200
  80.   Write "AT+FLID=\"^5\"\r"
  81.   Jsr 100
  82.  Write "AT+FDCC=1,3,0,2,0,0,0,0\r"
  83.  Jsr 100
  84.  Write "AT+FCR=1\r"
  85.  Jsr 100
  86. !
  87. ! Tell the modem to determine the type of the incoming call
  88. ! Fetch the tube after ^4 rings
  89. !
  90.   Write "ATS0=^4+FAA=1\r"
  91.   Jsr 100
  92. !
  93. ! Everything is ready - let's sit and wait for a call
  94. ! We'll wait for 2 minutes, then reinitiate the modem
  95. !
  96.   Note "Waiting for a fax or ARA call…"
  97. @Label 15
  98.   MatchClr
  99.   matchstr 1 16 "RING\r\n"
  100.   matchstr 2 20 "\r\nCARRIER "
  101.   matchstr 3 30 "\r\n+FCON"
  102.   matchstr 4 10 "\r\nNO "
  103.   matchstr 5 10 "\r\nBUSY"
  104.   Matchread 1200
  105.   jump 10
  106. @Label 16
  107.   Note "Ring…"
  108.   jump 15
  109. !
  110. ! Data connection has been established (we read "CARRIER")
  111. ! Put the "CONNECT" back to the buffer and attach the "Data" subPort
  112. ! if it was an incoming call, put the "RING" before the "CONNECT"
  113. !
  114. @Label 20
  115.   QueueInput "\r\nCARRIER "
  116.   ifOriginate 21
  117.   QueueInput "\r\nRING\r\n"
  118. @Label 21
  119.   Attach "ARA" (DTR,Escape,TimeLimit=0)
  120. !
  121. ! Fax connection has been established (we read "+FCON")
  122. ! Put the +FCON back to the buffer,
  123. ! if it was an incoming call, put the "RING" before the "+FCON"
  124. ! Attach the "Fax" subPort
  125. !
  126. @Label 30
  127.   QueueInput "\r\n+FCON"
  128.   ifOriginate 31
  129.   QueueInput "\r\nRING\r\n"
  130. @Label 31
  131.  Note "Fax Port Attached" 3
  132.  Attach "Fax" (DTR,Escape,IdleLimit=30)
  133.  
  134. ! ------------------------------------------
  135. ! Originating a call through the "ARA" subport
  136. ! ------------------------------------------
  137. @ORIGINATE "ARA"
  138.   SerReset 9600,0,8,1
  139.   Jsr 80
  140. !
  141. ! Set the common options
  142. !
  143.   Jsr 70
  144. !
  145. ! Set the Data mode:
  146. ! • \N0 Normal connection (no compression, correction - for ARA)
  147. ! • W1:  report connection rate
  148. !
  149.   Write "AT\\N0W1\r"
  150.   Jsr 100
  151. !
  152. ! Prepare to receive all error result codes, dial the number
  153. !
  154.   Jsr 90
  155.   MatchStr 1 20 "\r\nCARRIER "
  156.   MatchRead 1000
  157.   Write "\r"
  158.   Exit -6019
  159.  
  160. ! ------------------------------------------
  161. ! Originating a call through the "Fax" subPort
  162. ! ------------------------------------------
  163. @ORIGINATE "Fax" ("\r\nLineShare Line is Busy\r\nBUSY\r\n")
  164. !
  165. ! Set the "Fax" speed
  166. !
  167.   Note "Originating FAX" 3
  168.   SerReset 9600,0,8,1
  169.   Jsr 80
  170. !
  171. ! Set the common options
  172. !
  173.   Jsr 70
  174. !
  175. ! Set the Fax mode
  176. ! \Q3: HW handshake
  177. !
  178.   Write "AT+FCLASS=2\r"
  179.   Jsr 100
  180.   SetSpeed 19200
  181. !
  182. ! Now emit all commands that the application has sent to that port,
  183. !
  184.   EmitClear "+FCLASS"
  185.   Jsr 60
  186. !
  187. ! Prepare to receive all error result codes, dial the number
  188. !
  189.   Jsr 90
  190.   HSReset 0 1 0 0 0 0
  191.   MatchStr 1 30 "\r\n+FCON"
  192.   MatchRead 900
  193.   Write "\r"
  194.   Exit -6019
  195. !
  196. ! This section emits all modem commands sent from the client application
  197. ! For each set of commands the "OK" answer is awaited
  198. !
  199. @Label 60
  200.   EmitStart
  201. @Label 61
  202.   EmitCommand 62
  203.   Jsr 100
  204.   Jump 61
  205. @Label 62
  206.   return
  207. !
  208. ! This section initiates the modem before ANSWER and ORIGINATEs:
  209. ! extended responses + connect at the highest rate + speaker control +
  210. ! reset on Dtr drop 
  211. ! Verbal responses mode, no echo 
  212. !
  213. @Label 70
  214.   Write "ATX4M^2L^3^6V1E0\r"
  215.   Jsr 100
  216.   return 
  217.  
  218. !
  219. ! This section syncronize the modem after the serial port speed switching
  220. !
  221. @Label 80
  222.   ChrDelay 1
  223.   Write "AT\r"
  224.   ChrDelay 0
  225.   Jsr 100
  226.   return
  227. !
  228. ! Prepare to receive error result codes, send the dialing command and
  229. ! set the user's handshake mode
  230. !
  231. @Label 90
  232.   MatchClr
  233.   MatchStr 2 91 "NO DIALTONE\r\n"
  234.   MatchStr 3 92 "BUSY\r\n"
  235.   MatchStr 4 93 "NO CARRIER\r\n"
  236.   MatchStr 5 94 "NO ANSWER\r\n"
  237.   Write "ATD^1\r"
  238.   HsReset *
  239.   return
  240. @Label 91
  241.   exit -6020
  242. @Label 92
  243.   exit -6022
  244. @Label 93
  245.   exit -6021
  246. @Label 94
  247.   exit -6023
  248. !
  249. ! Processing the AT command:
  250. ! OK -> proceed
  251. ! ERROR or TimeOut ->exit -6019
  252. ! It can be called AFTER the "Write" command, since LineShare buffers input
  253. !
  254. @Label 100
  255.   MatchClr
  256.   MatchStr 1 102 "\r\nOK\r\n"
  257.   MatchStr 2 101 "\r\nERROR\r\n"
  258.   MatchRead 20
  259. @Label 101
  260.   Exit -6019
  261. @Label 102
  262.   return
  263.